Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡 Сегодня короткий, но полезный пост — с ответом сразу.
📌 Дано:
create table demo_table ( ID char(4 CHAR), value VARCHAR2(64 CHAR) );
Известно, что есть следующие индексы и ключи:
create index DEMO_TBL_VALUE_IX on demo_table (VALUE);
alter table DEMO_TABLE add constraint DEMO_TBL_PK primary key (ID) using index;
Вопрос (c подвохом) почему такая вставка проходит:
insert into demo_table values('0001', 1000);
А эта падает с ошибкойORA-01722: неверное число:
insert into demo_table values('0002', 'Test');
Ответ при наличии следующего индекса
create index DEMO_TBL_NUM_IX on demo_table(trunc(VALUE));
Такая конструкция называется индексом по функции (function based index). В реальных проектах она используется довольно часто, например, когда на строковое поле мы создаем индекс UPPER(<column>). Особенность такого индекса в том, что в листьях он хранит результат выполнения этой функции для каждого rowid. Поэтому никакой магии тут нет: если мы не можем записать в индекс результат функции, то и вставку выполнить мы не можем.
В нашем случае, функция trunc пытается примениться к значению value. В первой строке - 1000 (все ок), во второй - 'Test' (ошибка).
Ставьте лайк, если было познавательно. 🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.
Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡 Сегодня короткий, но полезный пост — с ответом сразу.
📌 Дано:
create table demo_table ( ID char(4 CHAR), value VARCHAR2(64 CHAR) );
Известно, что есть следующие индексы и ключи:
create index DEMO_TBL_VALUE_IX on demo_table (VALUE);
alter table DEMO_TABLE add constraint DEMO_TBL_PK primary key (ID) using index;
Вопрос (c подвохом) почему такая вставка проходит:
insert into demo_table values('0001', 1000);
А эта падает с ошибкойORA-01722: неверное число:
insert into demo_table values('0002', 'Test');
Ответ при наличии следующего индекса
create index DEMO_TBL_NUM_IX on demo_table(trunc(VALUE));
Такая конструкция называется индексом по функции (function based index). В реальных проектах она используется довольно часто, например, когда на строковое поле мы создаем индекс UPPER(<column>). Особенность такого индекса в том, что в листьях он хранит результат выполнения этой функции для каждого rowid. Поэтому никакой магии тут нет: если мы не можем записать в индекс результат функции, то и вставку выполнить мы не можем.
В нашем случае, функция trunc пытается примениться к значению value. В первой строке - 1000 (все ок), во второй - 'Test' (ошибка).
Ставьте лайк, если было познавательно. 🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.
For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.
What is Telegram Possible Future Strategies?
Cryptoassets enthusiasts use this application for their trade activities, and they may make donations for this cause.If somehow Telegram do run out of money to sustain themselves they will probably introduce some features that will not hinder the rudimentary principle of Telegram but provide users with enhanced and enriched experience. This could be similar to features where characters can be customized in a game which directly do not affect the in-game strategies but add to the experience.